// 需求：获取对象中的某一个 key 对应的值
// keyof {name: string;age: number;} => 'name' | 'age'
/* function getProp<T, K extends keyof T>(obj: T, key: K) {
  return obj[key]
}
let person = { name: 'jack', age: 18 }
getProp(person, 'name')

let p = { sex: '男', address: '武汉' }
getProp(p, 'address') */

function getProp<T, K extends keyof { name: string; age: number }>(
  obj: T,
  key: K
) {
  // !因为 T 是一个泛型，不确定的类型，有可能 T 里面根本就不具备 name 和 age，所以报错
  return obj[key]
}
let person = { name: 'jack', age: 18 }
getProp(person, 'age')
